int mode)
{
GdkToplevelX11 *toplevel;
+ GdkX11Screen *x11_screen;
gboolean had_focus;
g_return_if_fail (GDK_IS_WINDOW (window));
return;
had_focus = HAS_FOCUS (toplevel);
+ x11_screen = GDK_X11_SCREEN (gdk_window_get_screen (window));
switch (detail)
{
* has_focus_window case.
*/
if (toplevel->has_pointer &&
+ !x11_screen->wmspec_check_window &&
mode != NotifyGrab &&
#ifdef XINPUT_2
mode != XINotifyPassiveGrab &&
* but the pointer focus is ignored while a
* grab is in effect
*/
- if (mode != NotifyGrab &&
+ if (!x11_screen->wmspec_check_window &&
+ mode != NotifyGrab &&
#ifdef XINPUT_2
mode != XINotifyPassiveGrab &&
mode != XINotifyPassiveUngrab &&
handle_focus_change (GdkEventCrossing *event)
{
GdkToplevelX11 *toplevel;
+ GdkX11Screen *x11_screen;
gboolean focus_in, had_focus;
toplevel = _gdk_x11_window_get_toplevel (event->window);
+ x11_screen = GDK_X11_SCREEN (gdk_window_get_screen (event->window));
focus_in = (event->type == GDK_ENTER_NOTIFY);
+ if (x11_screen->wmspec_check_window)
+ return;
+
if (!toplevel || event->detail == GDK_NOTIFY_INFERIOR)
return;